#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
#endregion

namespace XnaGameComponents
{
    /// <summary>
    /// This is a game component that implements IUpdateable.
    /// </summary>
    public class Door : IGameComponent,IDrawable,IUpdateable
    {
        public Door()
        {
        }

        private Vector3 dimensions;

        public Vector3 Dimensions
        {
            get { return dimensions; }
            set { dimensions = value; }
        }

        private float position;

        public float Position
        {
            get { return position; }
            set { position = value; }
        }

	

        /// <summary>
        /// Allows the game component to perform any initialization it needs to before starting
        /// to run.  This is where it can query for any required services and load content.
        /// </summary>
        public void Initialize()
        {
            // TODO: Add your initialization code here

        }


        /// <summary>
        /// Allows the game component to update itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        public void Update(GameTime gameTime)
        {
            // TODO: Add your update code here

        }

        public void Draw(GameTime gameTime)
        {

        }

        #region IDrawable Membres

        private int drawOrder;

        public int DrawOrder
        {
            get { return drawOrder; }
            set
            {
                drawOrder = value;
                if (DrawOrderChanged != null)
                    DrawOrderChanged(this, EventArgs.Empty);
            }
        }

        public event EventHandler<EventArgs> DrawOrderChanged;

        private bool visible;

        public bool Visible
        {
            get { return visible; }
            set
            {
                visible = value;
                if (VisibleChanged != null)
                    VisibleChanged(this, EventArgs.Empty);
            }
        }

        public event EventHandler<EventArgs> VisibleChanged;

        #endregion

        #region IUpdateable Membres

        private bool enabled;

        public bool Enabled
        {
            get { return enabled; }
            set
            {
                enabled = value;
                if (EnabledChanged != null)
                    EnabledChanged(this, EventArgs.Empty);
            }
        }


        public event EventHandler<EventArgs> EnabledChanged;

        private int updateOrder;

        public int UpdateOrder
        {
            get { return updateOrder; }
            set
            {
                updateOrder = value;
                if (UpdateOrderChanged != null)
                    UpdateOrderChanged(this, EventArgs.Empty);
            }
        }

        public event EventHandler<EventArgs> UpdateOrderChanged;

        #endregion

    }
}


